package com.ccp.dev.system.dao;

import com.ccp.dev.core.basic.base.IBaseMapper;
import com.ccp.dev.system.model.SysRole;
import com.ccp.dev.system.model.UserPosition;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 用户岗位组织关系表
 * @author y
 */
@Mapper
public interface UserPositionDao extends IBaseMapper<UserPosition,String> {
    /**
     * 删除某用户的岗位关联关系
     * @param userId
     */
    void delByUserId(String userId);
    /**
     * 获取某用户的岗位关联关系
     * @param userId
     * @return List<UserPosition>
     */
    List<UserPosition> queryByUserId(String userId);
    /**
     * 获取某用户的组织关联关系
     * @param userId
     * @return List<UserPosition>
     */
    List<UserPosition> queryOrgByUserId(String userId);

    /**
     * 根据组织id查该组织下人员数量
     * @param id 组织id
     * @return 人员数量
     */
    int getUserSumByOrgId(String id);

    /**
     * 查询组织下是否存在非三员用户
     * @param orgId 组织id
     * @return 角色list
     */
    List<SysRole> isExistsUser(String orgId);

    /**
     * 删除用户与组织关联表数据
     * @param orgId 组织id
     */
    void delByOrgId(String orgId);

    /**
     * 获取用户的组织信息
     * @param userId
     * @return
     */
    UserPosition getOneByUserId(String userId);

    /**
     * 根据组织id串得到用户和组织及岗位的关系
     * @param orgIds
     * @return
     */
    List<UserPosition> queryUserByOrgIds(String orgIds);

    List<UserPosition> queryPrimaryOrgByUserIds(@Param("userIds")List<String> userIds);

    void batchDeleteByUserId(@Param("userIds") List<String> userIds);
}